package indi.zhifa.recipe.bailan.framework.enums.service;

import indi.zhifa.recipe.bailan.framework.enums.entity.dto.*;
import indi.zhifa.recipe.bailan.framework.enums.entity.po.SysTypeItemEntity;
import indi.zhifa.recipe.bailan.framework.enums.entity.vo.SysTypeVo;

public interface ITypeMgrService {

    void init();

    /**
     * 创建类型
     *
     * @param pSysTypeCfg  类型配置
     * @return
     */
    SysTypeVo create(SysTypeCreateDto pSysTypeCfg);

    SysTypeVo edit(Long pId, SysTypeEditDto pSysTypeEditCfg);

    /**
     *  修改类型信息
     *
     * @param pId   类型Id
     * @param pSysTypeEditAllDto 类型配置，包括子项
     * @return
     */
    SysTypeVo edit(Long pId, SysTypeEditAllDto pSysTypeEditAllDto);

    /**
     * 查看类型信息
     *
     * @param pId   类型Id
     * @return  类型VO
     */
    SysTypeVo info(Long pId);

    /**
     * 通过
     *
     * @param pCode
     * @return
     */
    SysTypeVo info(String pCode);

    /**
     * 新增类型项
     *
     * @param pTypeId  类型Id
     * @param pSysTypeItemCreateCfg 类型配置
     * @return
     */
    SysTypeItemEntity addItem(Long pTypeId, SysTypeItemCreateDto pSysTypeItemCreateCfg);

    /**
     * 编辑类型项
     *
     * @param pTypeItemId       类型Id
     * @param pSysTypeItemEditCfg      类型配置
     * @return 类型VO
     */
    SysTypeItemEntity editItem(Long pTypeItemId, SysTypeItemEditDto pSysTypeItemEditCfg);

    /**
     * 删除类型Id
     *
     * @param pTypeItemId   类型Id
     * @return  类型VO
     */
    boolean deleteTypeItem(Long pTypeItemId);

    /**
     * 删除类型
     *
     * @param pTypeId   类型Id
     * @return
     */
    boolean deleteType(Long pTypeId);

}
